home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Internet Strate…Tools for the Enterprise / Microsoft Internet Strategy & Tools for the Enterprise.iso / bkoffice / inetsrv.nts / nt351qfe.usa / mpr / ppc / update.inf < prev   
INI File  |  1995-10-07  |  37KB  |  854 lines

  1. [FileKeyedClasses]
  2.     Hal            = hal.dll
  3.     Ntoskrnl       = ntoskrnl.exe
  4. [FilesKeyedSections]
  5.     FilesHal       = $(STF_HALDEST)
  6.     FilesNtoskrnl  = $(STF_WINDOWSSYSPATH)
  7. [FilesHal]
  8.  
  9. [FilesNtoskrnl]
  10.  
  11. [FileSections]
  12.     FilesPrimary        = C:
  13.     FilesOsLoader       = $(STF_OSLDEST)
  14.     FilesPal            = $(STF_HALDEST)
  15.     FilesWinnt          = $(STF_WINDOWSPATH)
  16.     FilesSystem32       = $(STF_WINDOWSSYSPATH)
  17.     FilesSystem         = $(STF_WINDOWSPATH)\system
  18.     FilesDrivers        = $(STF_WINDOWSSYSPATH)\drivers
  19.     FilesConfig         = $(STF_WINDOWSSYSPATH)\config
  20.     FilesWinspool       = $(STF_WINDOWSSYSPATH)\spool
  21.     FilesPrnDriver      = $(STF_WINDOWSSYSPATH)\spool\drivers\$(!STF_PRNPLATFORM)
  22.     FilesPrnProc        = $(STF_WINDOWSSYSPATH)\spool\prtprocs\$(!STF_PRNPLATFORM)
  23.     FilesDbgCom         = $(STF_WINDOWSPATH)\symbols\com
  24.     FilesDbgCpl         = $(STF_WINDOWSPATH)\symbols\cpl
  25.     FilesDbgDll         = $(STF_WINDOWSPATH)\symbols\dll
  26.     FilesDbgDrv         = $(STF_WINDOWSPATH)\symbols\drv
  27.     FilesDbgExe         = $(STF_WINDOWSPATH)\symbols\exe
  28.     FilesDbgScr         = $(STF_WINDOWSPATH)\symbols\scr
  29.     FilesDbgSys         = $(STF_WINDOWSPATH)\symbols\sys
  30. [FileSectionsCopyAlways]
  31.     FilesSystem32CopyAlways = $(STF_WINDOWSSYSPATH)
  32.     FilesDriversCopyAlways  = $(STF_WINDOWSSYSPATH)\drivers
  33. [FileSectionsWINNT]
  34.     FilesInfWinnt       = $(STF_WINDOWSSYSPATH)
  35. [FileSectionsLANMANNT]
  36.     FilesInfLanmanNT    = $(STF_WINDOWSSYSPATH)
  37. [FileSectionsCopyAlwaysWINNT]
  38.     FilesSystem32CopyAlwaysWinnt = $(STF_WINDOWSSYSPATH)
  39. [FileSectionsCopyAlwaysLANMANNT]
  40.     FilesSystem32CopyAlwaysLanmanNT = $(STF_WINDOWSSYSPATH)
  41. [FilesPrimary]
  42.  
  43. [FilesOsLoader]
  44.  
  45. [FilesPal]
  46.  
  47. [FilesWinnt]
  48. [FilesSystem32]
  49. 1 = 1, IPXCFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  50. 2 = 1, TCPCFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  51. 3 = 1, IPXROUTE.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
  52. 4 = 1, CONTROL.HLP, RENAME=$(NEWFILE), NOLOG, UNDO
  53. 5 = 1, NWSAP.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  54. 6 = 1, IPRIP.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  55. 7 = 1, RELAY.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  56. 8 = 1, ROUTER.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
  57. 9 = 1, TRACE.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  58.  
  59. [FilesSystem]
  60. [FilesDrivers]
  61. [FilesConfig]
  62. [FilesWinspool]
  63. [FilesPrnDriver]
  64. [FilesPrnProc]
  65. [FilesDbgCom]
  66. [FilesDbgCpl]
  67. [FilesDbgDll]
  68. [FilesDbgDrv]
  69. [FilesDbgExe]
  70. [FilesDbgScr]
  71. [FilesDbgSys]
  72.  
  73. [FilesInfWinnt]
  74. 1 = 1, OEMNXPTC.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  75. 2 = 1, OEMNXPIP.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  76. 3 = 1, OEMNSVRA.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  77.  
  78. [FilesInfLanmanNT]
  79. 1 = 1, OEMNXPTC.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  80. 2 = 1, OEMNXPIP.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  81. 3 = 1, OEMNSVRA.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  82.  
  83. [FilesSystem32CopyAlways]
  84. [FilesDriversCopyAlways]
  85.  
  86. [FilesSystem32CopyAlwaysWINNT]
  87. 1 = 1, OEMNSVRR.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  88.  
  89. [FilesSystem32CopyAlwaysLANMANNT]
  90. 1 = 1, OEMNSVRR.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  91. 2 = 1, OEMNSVBR.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  92. 3 = 1, OEMNSVIR.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  93. 4 = 1, RACFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  94.  
  95. [ProcessorID]
  96.     ProcessorID_I386  = I386
  97.     ProcessorID_I486  = I486
  98.     ProcessorID_I586  = I586
  99.     ProcessorID_R4000 = R4000
  100. [UiVars]
  101.     STF_PLATFORMDET    = "" ? $(!LIBHANDLE) GetPlatform
  102.     STF_CSDVER         = 512
  103.     STF_BUILDVER       = 1057
  104.     STF_CSD1_NT35      = 256
  105.     STF_NT31_BUILDVER  = 528
  106.     STF_NT35_BUILDVER  = 807
  107.     STF_NT351_BUILDVER = 1057
  108.     STF_NT351_MAJORVER = 3
  109.     STF_NT351_MINORVER = 51
  110.     STF_PRIMARY        = "C:"
  111.     STF_NTDRIVE        = ""
  112.     STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
  113.     STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
  114.     STF_CONTROLSET     = CurrentControlSet
  115.     VolumeList         = {} ? $(!LIBHANDLE) GetHardDriveLetters
  116.     VolumeFSList       = {} ? $(!LIBHANDLE) GetHardDriveFileSystems
  117.     VolumeFreeList     = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace
  118.     DisketteList       = {} ? $(!LIBHANDLE) GetFloppyDriveLetters
  119. [FreeSpaceI386]
  120.     RequiredFreeWinnt  = 5
  121. [FreeSpaceMips]
  122.     RequiredFreeWinnt  = 5
  123. [FreeSpaceppc]
  124.     RequiredFreeWinnt  = 5
  125. [FreeSpaceAlpha]
  126.     RequiredFreeWinnt  = 5
  127. [NVRAMVars]
  128.     SystemPartition = "" ? $(!LIBHANDLE) GetNVRAMVar SYSTEMPARTITION
  129.     OsLoader        = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADER
  130.     OsLoadPartition = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADPARTITION
  131.     OsLoadFilename  = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADFILENAME
  132. [Shell Commands]
  133.     set-title "Windows NT Setup"
  134.     set-subst CR = "\r"
  135.     set-subst LF = "\n"
  136.     set STF_LANGUAGE = ENG
  137.     read-syms Strings
  138.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1)
  139.     set BillboardPushed = TRUE
  140.     set !LIBHANDLE      = ""
  141.     set !PATCHLIBHANDLE = ""
  142.     install   LoadSetupLibrary
  143.     read-syms ProductType
  144.     ifstr(i) $(!STF_PLATFORM) == I386
  145.         set STF_PRNPLATFORM = "w32x86"
  146.     else-ifstr(i) $(!STF_PLATFORM) == Mips
  147.         set STF_PRNPLATFORM = "w32mips"
  148.     else-ifstr(i) $(!STF_PLATFORM) == ppc
  149.         set STF_PRNPLATFORM = "w32ppc"
  150.     else-ifstr(i) $(!STF_PLATFORM) == Alpha
  151.         set STF_PRNPLATFORM = "w32alpha"
  152.     endif
  153.     read-syms UiVars
  154.     detect    UiVars
  155.     read-syms FreeSpace$(!STF_PLATFORM)
  156.     ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET)
  157.          ifstr(i) $(BillboardPushed) == TRUE
  158.              shell "subroutn.inf" PopBillboard
  159.              set BillboardPushed = FALSE
  160.          endif
  161.          shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String1)
  162.          goto patchnotdone
  163.     endif
  164.     shell "registry.inf" CheckSetupModify
  165.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  166.         ifstr(i) $(BillboardPushed) == TRUE
  167.             shell "subroutn.inf" PopBillboard
  168.             set BillboardPushed = FALSE
  169.         endif
  170.         Debug-Output "shelling CheckSetupModify failed"
  171.         goto patchnotdone
  172.     else-ifstr(i) $($R0) != STATUS_SUCCESSFUL
  173.         ifstr(i) $(BillboardPushed) == TRUE
  174.             shell "subroutn.inf" PopBillboard
  175.             set BillboardPushed = FALSE
  176.         endif
  177.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
  178.         goto patchnotdone
  179.     endif
  180.     install   LoadPatchLibrary
  181.     shell "" GetCheckedFree
  182.     ifint $($ShellCode) == $(!SHELL_CODE_OK)
  183.         ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
  184.             ifstr(i) $($R1) == "checked"
  185.                 shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String15)
  186.                 goto patchnotdone
  187.             endif
  188.         endif
  189.     endif
  190.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMajorVersion
  191.     ifint $(STATUS) > $(STF_NT351_MAJORVER)
  192.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  193.         goto patchnotdone
  194.     else-ifint $(STATUS) = $(STF_NT351_MAJORVER)
  195.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMinorVersion
  196.         ifint $(STATUS) > $(STF_NT351_MINORVER)
  197.             shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  198.             goto patchnotdone
  199.         endif
  200.     endif
  201.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckBuildVersion
  202.     ifint $(STATUS) <= $(STF_NT35_BUILDVER)
  203.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String16)
  204.         goto patchnotdone
  205.     else-ifint $(STATUS) < $(STF_NT351_BUILDVER)
  206.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String17)
  207.         goto patchnotdone
  208.     else-ifint $(STATUS) > $(STF_NT351_BUILDVER)
  209.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  210.         goto patchnotdone
  211.     endif
  212.     ifstr(i) $(!STF_PLATFORM) == ppc
  213.         OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion" 33554432 KeyCurrentVersion
  214.         ifstr(i) $(KeyCurrentVersion) != ""
  215.             GetRegValue $(KeyCurrentVersion) "CSDVersion" CSDVersionList
  216.             ifstr(i) $(CSDVersionList) == "Power Managed Version X"
  217.                 shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String19)
  218.                 goto patchnotdone
  219.             endif
  220.             GetRegValue $(KeyCurrentVersion) "PowerManagedVersion" PMVersionList
  221.             ifstr(i) $(PMVersionList) != ""
  222.                 shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String19)
  223.                 goto patchnotdone
  224.             endif
  225.         endif
  226.     endif
  227. skip_patchvercheck = +
  228.     GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH)
  229.     ifint *($(VolumeFreeList), ~($(VolumeList), $(!STF_NTDRIVE))) < $(RequiredFreeWinnt)
  230.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String13a)$(RequiredFreeWinnt)$(String13b)$(!STF_NTDRIVE)$(String13c)
  231.         goto patchnotdone
  232.     endif
  233.     set STF_PRODUCT = ""
  234.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption
  235.     ifstr(i) $(KeyProductOption) != ""
  236.         GetRegValue $(KeyProductOption) "ProductType" ProductTypeList
  237.         set TempProductType = *($(ProductTypeList),4)
  238.         ifstr(i) $(TempProductType) == "winnt"
  239.             set !STF_PRODUCT = WINNT
  240.             set !PRODUCT_DIR = WINNT
  241.         else-ifstr(i) $(TempProductType) == "lanmannt"
  242.             set !STF_PRODUCT = LANMANNT
  243.             set !PRODUCT_DIR = NTAS
  244.         else-ifstr(i) $(TempProductType) == "servernt"
  245.             set !STF_PRODUCT = SERVERNT
  246.             set !PRODUCT_DIR = NTAS
  247.         endif
  248.         CloseRegKey $(KeyProductOptions)
  249.     endif
  250.     ifstr(i) $(STF_PRODUCT) == ""
  251.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String14)
  252.         goto patchnotdone
  253.     endif
  254.     ifstr(i) $(!STF_PLATFORM) == I386
  255.         set STF_HALDEST = $(!STF_WINDOWSSYSPATH)
  256.         set STF_OSLDEST = C:\
  257.     else
  258.         read-syms NVRAMVars
  259.         detect    NVRAMVars
  260.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest         +
  261.                                                          $(SystemPartition) +
  262.                                                          $(OsLoader)        +
  263.                                                          $(OsLoadPartition) +
  264.                                                          $(OsLoadFilename)
  265.         ifstr(i) $(STATUS) == ERROR
  266.             goto patchnotdone
  267.         else
  268.             set STF_OSLDEST = $(STATUS)
  269.             set STF_HALDEST = $(STATUS)
  270.         endif
  271.     endif
  272.     read-syms FilesKeyedSections
  273.     set KeyedClassKeys  = ^(FileKeyedClasses, 0)
  274.     set KeyedClassFiles = ^(FileKeyedClasses, 1)
  275.     set KeyedClassFilesList = {}
  276.     ForListDo $(KeyedClassKeys)
  277.         set TmpKey       = Files$($)
  278.         set TmpFile      = #(FileKeyedClasses, $($), 1)
  279.         set TmpFilePath  = $($(TmpKey))\$(TmpFile)
  280.         set KeyedClassFilesList = >($(KeyedClassFilesList), $(TmpFilePath))
  281.     EndForListDo
  282.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFileTypes $(KeyedClassFilesList)
  283.     ifstr(i) $(STATUS) == ERROR
  284.         goto patchnotdone
  285.     else-ifstr(i) $(STATUS) == SETUPLOGNOTPRESENT
  286.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String11)
  287.         goto patchnotdone
  288.     else
  289.         ForListDo $(KeyedClassKeys)
  290.             set $($)Type = *($(STATUS), $(#))
  291.         EndForListDo
  292.     endif
  293.     ifstr(i) $(BillboardPushed) == TRUE
  294.         shell "subroutn.inf" PopBillboard
  295.         set BillboardPushed = FALSE
  296.     endif
  297.     shell "" QueryOkCancel $(String9)
  298.     ifstr(i) $($R1) == "OK"
  299.     else
  300.         set String = $(String12)
  301.         goto finish2
  302.     endif
  303.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard2)
  304.     set BillboardPushed = TRUE
  305.     set MoveFileExList  = {}
  306.     read-syms FileSections
  307.     set FileSectionsList = ^(FileSections, 0)
  308.     set FileSource  = $(!STF_SRCDIR)
  309.     ForListDo $(FileSectionsList)
  310.         set FileSection = $($)
  311.         set FileDest    = $($($))
  312.         set FileList    = ^($(FileSection), 0)
  313.         ForListDo $(FileList)
  314.             set FileKey = $($)
  315.             set File    = #($(FileSection), $(FileKey), 2)
  316.             set FileDestFullPath = $(FileDest)\$(File)
  317.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  318.             ifstr(i) $(STATUS) == YES
  319.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  320.                 ifstr(i) $(STATUS) == ERROR
  321.                     goto patchnotdone
  322.                 else
  323.                     ifstr(i) $(STATUS) == "YES"
  324.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  325.                         ifstr(i) $(NEWFILE) == ERROR
  326.                             goto patchnotdone
  327.                         else
  328.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  329.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  330.                         endif
  331.                     else
  332.                         set NEWFILE = $(File)
  333.                     endif
  334.                     install Install-File
  335.                 endif
  336.             endif
  337.         EndForListDo
  338.     EndForListDO
  339.     set FileSource  = $(!STF_SRCDIR)
  340.     ForListDo $(KeyedClassKeys)
  341.         set FileSection = Files$($)
  342.         set FileDest    = $($(FileSection))
  343.         set FileKey     = $($($)Type)
  344.         set KeyedClassChoices = ^(Files$($), 0)
  345.         ifcontains(i) $(FileKey) in $(KeyedClassChoices)
  346.             set File             = #(FileKeyedClasses, $($), 1)
  347.             set FileDestFullPath = $(FileDest)\$(File)
  348.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  349.             ifstr(i) $(STATUS) == YES
  350.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  351.                 ifstr(i) $(STATUS) == ERROR
  352.                     goto patchnotdone
  353.                 else
  354.                     ifstr(i) $(STATUS) == "YES"
  355.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  356.                         ifstr(i) $(NEWFILE) == ERROR
  357.                             goto patchnotdone
  358.                         else
  359.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  360.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  361.                         endif
  362.                     else
  363.                         set NEWFILE = $(File)
  364.                     endif
  365.                     install Install-File
  366.                 endif
  367.             endif
  368.         endif
  369.     EndForListDo
  370.     ifstr(i) $(STF_PRODUCT) == "WINNT"
  371.         set TEMP_PRODUCT = WINNT
  372.     else
  373.         set TEMP_PRODUCT = LANMANNT
  374.     endif
  375.     read-syms FileSections$(TEMP_PRODUCT)
  376.     set FileSectionsList = ^(FileSections$(TEMP_PRODUCT), 0)
  377.     set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
  378.     ForListDo $(FileSectionsList)
  379.         set FileSection = $($)
  380.         set FileDest    = $($($))
  381.         set FileList    = ^($(FileSection), 0)
  382.         ForListDo $(FileList)
  383.             set FileKey = $($)
  384.             set File    = #($(FileSection), $(FileKey), 2)
  385.             set FileDestFullPath = $(FileDest)\$(File)
  386.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  387.             ifstr(i) $(STATUS) == YES
  388.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  389.                 ifstr(i) $(STATUS) == ERROR
  390.                     goto patchnotdone
  391.                 else
  392.                     ifstr(i) $(STATUS) == "YES"
  393.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  394.                         ifstr(i) $(NEWFILE) == ERROR
  395.                             goto patchnotdone
  396.                         else
  397.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  398.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  399.                         endif
  400.                     else
  401.                         set NEWFILE = $(File)
  402.                     endif
  403.                     install Install-File
  404.                 endif
  405.             endif
  406.         EndForListDo
  407.     EndForListDO
  408.     ifstr(i) $(BillboardPushed) == TRUE
  409.         shell "subroutn.inf" PopBillboard
  410.         set BillboardPushed = FALSE
  411.     endif
  412.     read-syms FileSectionsCopyAlways
  413.     set FileSectionsList = ^(FileSectionsCopyAlways, 0)
  414.     set FileSource  = $(!STF_SRCDIR)
  415.     ForListDo $(FileSectionsList)
  416.         set FileSection = $($)
  417.         set FileDest    = $($($))
  418.         set FileList    = ^($(FileSection), 0)
  419.         ForListDo $(FileList)
  420.             set FileKey = $($)
  421.             set File    = #($(FileSection), $(FileKey), 2)
  422.             set NEWFILE = $(File)
  423.             set FileDestFullPath = $(FileDest)\$(File)
  424.             install Install-File
  425.         EndForListDo
  426.     EndForListDO
  427.     read-syms FileSectionsCopyAlways$(TEMP_PRODUCT)
  428.     set FileSectionsList = ^(FileSectionsCopyAlways$(TEMP_PRODUCT), 0)
  429.     set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
  430.     ForListDo $(FileSectionsList)
  431.         set FileSection = $($)
  432.         set FileDest    = $($($))
  433.         set FileList    = ^($(FileSection), 0)
  434.         ForListDo $(FileList)
  435.             set FileKey = $($)
  436.             set File    = #($(FileSection), $(FileKey), 2)
  437.             set NEWFILE = $(File)
  438.             set FileDestFullPath = $(FileDest)\$(File)
  439.             install Install-File
  440.         EndForListDo
  441.     EndForListDO
  442.     read-syms ProgressCopy$(!STF_LANGUAGE)
  443.     install   Install-DoCopy
  444.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  445.         goto patchnotdone
  446.     else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  447.         goto patchnotdone
  448.     endif
  449. processmovefileex=+
  450.     ForListDo $(MoveFileExList)
  451.         set ExistingPath = *($($), 1)
  452.         set NewPath      = *($($), 2)
  453.         LibraryProcedure STATUS, $(!PATCHLIBHANDLE), CopyFileOnReboot $(ExistingPath) $(NewPath)
  454.         ifstr(i) $(STATUS) == ERROR
  455.             goto patchnotdone
  456.         endif
  457.     EndForListDo
  458. patchdone =+
  459.     ifstr(i) $(BillboardPushed) == TRUE
  460.         shell "subroutn.inf" PopBillboard
  461.         set BillboardPushed = FALSE
  462.     endif
  463.     shell "" DoRegistryModifications $(!STF_CSDVER)
  464.     read-syms SetupDoneDlg$(!STF_LANGUAGE)
  465.     ui start "SetupDone"
  466.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  467.         ui pop 1
  468.         goto rebootend
  469.     else
  470.         ui pop 1
  471.         goto finish1
  472.     endif
  473. patchnotdone =+
  474.     set String = $(String2)
  475. finish2 =+
  476.     ifstr(i) $(BillboardPushed) == TRUE
  477.         shell "subroutn.inf" PopBillboard
  478.         set BillboardPushed = FALSE
  479.     endif
  480.     shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String)
  481.     goto finish1
  482. finish1 =+
  483.     install   FreeSetupLibrary
  484. finish =+
  485.     install   FreePatchLibrary
  486.     exit
  487. rebootend =+
  488.     set Reboot = YES
  489.     install   Install-Shutdown
  490.     goto finish1
  491.     exit
  492. [LoadPatchLibrary]
  493.     LoadLibrary "x" patchdll.dll !PATCHLIBHANDLE
  494.     exit
  495. [FreePatchLibrary]
  496.     ifstr(i) $(!PATCHLIBHANDLE) != ""
  497.         FreeLibrary $(!PATCHLIBHANDLE)
  498.     endif
  499.     exit
  500. [LoadSetupLibrary]
  501.     LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE
  502.     exit
  503. [FreeSetupLibrary]
  504.     ifstr(i) $(!LIBHANDLE) != ""
  505.         FreeLibrary $(!LIBHANDLE)
  506.     endif
  507.     exit
  508. [Install-File]
  509.     set STF_VITAL = ""
  510.     AddSectionKeyFileToCopyList $(FileSection) $(FileKey) $(FileSource) $(FileDest)
  511.     exit
  512. [Install-DoCopy]
  513.     CopyFilesInCopyList
  514.     exit
  515. [Install-Shutdown]
  516.     LibraryProcedure STATUS,$(!LIBHANDLE),ShutdownSystem $(Reboot)
  517.     exit
  518. [RegistryConstants]
  519.     MaskAllAccess          = 33554432
  520.     NoTitle                = 0
  521.     RegLastError           = $(!REG_ERROR_SUCCESS)
  522. [DoRegistryModifications]
  523.     set Status = STATUS_FAILED
  524.     read-syms RegistryConstants
  525.     set KeyPath   = { +
  526.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  527.                      {Classes,                 $(NoTitle), $(MaskAllAccess)}, +
  528.                      {Package,                 $(NoTitle), $(MaskAllAccess)}  +
  529.                     }
  530.     set KeyValues = { +
  531.                      {"", $(NoTitle), $(!REG_VT_SZ), "Package" } +
  532.                     }
  533.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  534.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  535.         goto endCSDVersionCreate
  536.     endif
  537.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  538.         goto endCSDVersionCreate
  539.     else
  540.         CloseRegKey $($R1)
  541.     endif
  542.     set KeyPath   = { +
  543.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  544.                      {Classes,                 $(NoTitle), $(MaskAllAccess)}, +
  545.                      {CLSID,                   $(NoTitle), $(MaskAllAccess)}  +
  546.                      {"{0003000C-0000-0000-C000-000000000046}",     $(NoTitle), $(MaskAllAccess)}  +
  547.                     }
  548.     set KeyValues = { +
  549.                      {"", $(NoTitle), $(!REG_VT_SZ), "Package" } +
  550.                     }
  551.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  552.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  553.         goto endCSDVersionCreate
  554.     endif
  555.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  556.         goto endCSDVersionCreate
  557.     else
  558.         CloseRegKey $($R1)
  559.     endif
  560.     set KeyPath   = { +
  561.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  562.                      {Classes,                 $(NoTitle), $(MaskAllAccess)}, +
  563.                      {Interface,               $(NoTitle), $(MaskAllAccess)}  +
  564.                      {"{00020400-0000-0000-C000-000000000046}",     $(NoTitle), $(MaskAllAccess)}  +
  565.                      {ProxyStubClsid,          $(NoTitle), $(MaskAllAccess)}  +
  566.                     }
  567.     set KeyValues = { +
  568.                      {"", $(NoTitle), $(!REG_VT_SZ), "{00020420-0000-0000-C000-000000000046}" } +
  569.                     }
  570.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  571.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  572.         goto endCSDVersionCreate
  573.     endif
  574.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  575.         goto endCSDVersionCreate
  576.     else
  577.         CloseRegKey $($R1)
  578.     endif
  579.     set KeyPath   = { +
  580.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  581.                      {Classes,                 $(NoTitle), $(MaskAllAccess)}, +
  582.                      {Interface,               $(NoTitle), $(MaskAllAccess)}  +
  583.                      {"{00020400-0000-0000-C000-000000000046}",     $(NoTitle), $(MaskAllAccess)}  +
  584.                      {ProxyStubClsid32,        $(NoTitle), $(MaskAllAccess)}  +
  585.                     }
  586.     set KeyValues = { +
  587.                      {"", $(NoTitle), $(!REG_VT_SZ), "{00020420-0000-0000-C000-000000000046}" } +
  588.                     }
  589.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  590.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  591.         goto endCSDVersionCreate
  592.     endif
  593.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  594.         goto endCSDVersionCreate
  595.     else
  596.         CloseRegKey $($R1)
  597.     endif
  598.     set KeyPath   = { +
  599.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  600.                      {Microsoft,               $(NoTitle), $(MaskAllAccess)}, +
  601.                      {"Windows NT",              $(NoTitle), $(MaskAllAccess)}, +
  602.                      {CurrentVersion,          $(NoTitle), $(MaskAllAccess)}, +
  603.                      {Embedding,               $(NoTitle), $(MaskAllAccess)}  +
  604.                     }
  605.     set KeyValues = { +
  606.                      {Package, $(NoTitle), $(!REG_VT_SZ), "Package,Package,packgr32.exe,picture" } +
  607.                     }
  608.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  609.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  610.         goto endCSDVersionCreate
  611.     endif
  612.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  613.         goto endCSDVersionCreate
  614.     else
  615.         CloseRegKey $($R1)
  616.     endif
  617.     set KeyPath   = { +
  618.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  619.                      {Microsoft,               $(NoTitle), $(MaskAllAccess)}, +
  620.                      {"Windows NT",            $(NoTitle), $(MaskAllAccess)}, +
  621.                      {CurrentVersion,          $(NoTitle), $(MaskAllAccess)}, +
  622.                      {"Time Zones",            $(NoTitle), $(MaskAllAccess)}, +
  623.                      {"E. South America Standard Time",     $(NoTitle), $(MaskAllAccess)}  +
  624.                     }
  625.     set KeyValues = { +
  626.                      {Display, $(NoTitle), $(!REG_VT_SZ), "(GMT-03:00) Brasilia" } +
  627.                     }
  628.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  629.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  630.         goto endCSDVersionCreate
  631.     endif
  632.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  633.         goto endCSDVersionCreate
  634.     else
  635.         CloseRegKey $($R1)
  636.     endif
  637.     set KeyPath   = { +
  638.                      {SYSTEM,                  $(NoTitle), $(MaskAllAccess)}, +
  639.                      {ControlSet001,           $(NoTitle), $(MaskAllAccess)}, +
  640.                      {Control,                 $(NoTitle), $(MaskAllAccess)}, +
  641.                      {ServiceGroupOrder,       $(NoTitle), $(MaskAllAccess)}  +
  642.                     }
  643.     set KeyValues = { +
  644.                      {List, $(NoTitle), $(!REG_VT_MULTI_SZ), {                       +
  645.                                                               "System Bus Extender", +
  646.                                                               "SCSI miniport",       +
  647.                                                               "port",                +
  648.                                                               "Primary disk",        +
  649.                                                               "SCSI class",          +
  650.                                                               "SCSI CDROM class",    +
  651.                                                               "filter",              +
  652.                                                               "boot file system",    +
  653.                                                               "Base",                +
  654.                                                               "Pointer Port",        +
  655.                                                               "Keyboard Port",       +
  656.                                                               "Pointer Class",       +
  657.                                                               "Keyboard Class",      +
  658.                                                               "Video Init",          +
  659.                                                               "Video",               +
  660.                                                               "Video Save",          +
  661.                                                               "file system",         +
  662.                                                               "Event log",           +
  663.                                                               "Streams Drivers",     +
  664.                                                               "NDIS",                +
  665.                                                               "TDI",                 +
  666.                                                               "NetBIOSGroup",        +
  667.                                                               "SpoolerGroup",        +
  668.                                                               "NetDDEGroup",         +
  669.                                                               "Parallel arbitrator", +
  670.                                                               "extended base",       +
  671.                                                               "RemoteValidation",    +
  672.                                                               "PCI Configuration"    +
  673.                                                              } }  +
  674.                     }
  675.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  676.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  677.         goto endCSDVersionCreate
  678.     endif
  679.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  680.         goto endCSDVersionCreate
  681.     else
  682.         CloseRegKey $($R1)
  683.     endif
  684.     set KeyPath   = { +
  685.                      {SYSTEM,            $(NoTitle), $(MaskAllAccess)}, +
  686.                      {CurrentControlSet, $(NoTitle), $(MaskAllAccess)}, +
  687.                      {Control,           $(NoTitle), $(MaskAllAccess)}, +
  688.                      {ProductOptions,    $(NoTitle), $(MaskAllAccess)}, +
  689.                     }
  690.     set KeyValues = { +
  691.                      {CSDVersion, $(NoTitle), $(!REG_VT_DWORD), $($0) } +
  692.                     }
  693.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  694.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  695.         goto endCSDVersionCreate
  696.     endif
  697.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  698.         goto endCSDVersionCreate
  699.     else
  700.         CloseRegKey $($R1)
  701.     endif
  702.     set Status = STATUS_SUCCESSFUL
  703. endCSDVersionCreate = +
  704.     Return $(Status)
  705. [GetCSDVersion]
  706.     set Status = STATUS_SUCCESSFUL
  707.     read-syms RegistryConstants
  708.     set CSDVersion = 0
  709.     set KeyName = "SYSTEM\CurrentControlSet\Control\ProductOptions"
  710.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  711.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  712.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  713.         goto end_GetCSDVersion
  714.     endif
  715.     GetRegValue $(KeyHandle) "CSDVersion" CSDVersionValue
  716.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  717.         CloseRegKey $(KeyHandle)
  718.         goto end_GetCSDVersion
  719.     endif
  720.     set CSDVersion =  *($(CSDVersionValue), 4)
  721.     CloseRegKey $(KeyHandle)
  722. end_GetCSDVersion = +
  723.     Return $(Status) $(CSDVersion)
  724. [GetCheckedFree]
  725.     set Status = STATUS_SUCCESSFUL
  726.     read-syms RegistryConstants
  727.     set System = Free
  728.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  729.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  730.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  731.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  732.         goto end_GetCheckedFree
  733.     endif
  734.     GetRegValue $(KeyHandle) "CurrentType" CurrentTypeValue
  735.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  736.         CloseRegKey $(KeyHandle)
  737.         goto end_GetCheckedFree
  738.     endif
  739.     Split-String *($(CurrentTypeValue), 4) " " CurrentTypeList
  740.     ForListDo $(CurrentTypeList)
  741.        ifstr(i) $($) == "free"
  742.           set System = free
  743.        else-ifstr(i) $($) == "checked"
  744.           set System = checked
  745.        endif
  746.     EndForListDo
  747.     CloseRegKey $(KeyHandle)
  748. end_GetCheckedFree = +
  749.     Return $(Status) $(System)
  750. [QueryOkCancel]
  751.     set DlgText = $($0)
  752.     read-syms QueryOKCancelDlg$(!STF_LANGUAGE)
  753.     ui start "SetupMessage"
  754.     ifstr(i) $(DLGEVENT) == "OK"
  755.         set Status     = STATUS_SUCCESSFUL
  756.         set UserAction = $(DLGEVENT)
  757.     else-ifstr(i) $(DLGEVENT) == "CANCEL"
  758.         set Status     = STATUS_SUCCESSFUL
  759.         set UserAction = $(DLGEVENT)
  760.     else
  761.         set Status     = STATUS_FAILED
  762.         set UserAction = "CANCEL"
  763.     endif
  764.     Return $(Status) $(UserAction)
  765. [Source Media Descriptions]
  766.     1 = "Windows NT Workstation CD-ROM" , TAGFILE = cdrom.w
  767. [Signature]
  768.     FileType = MICROSOFT_FILE
  769. [GetSignature]
  770.     read-syms Signature
  771.     return $(FileType)
  772. [ProductType]
  773. STF_PRODUCT  = Winnt
  774. STF_PLATFORM = ppc
  775. [Source Media Descriptions]
  776.     1  = "Windows NT 3.51 Update Disk #1"  , TAGFILE = disk1
  777.     2  = "Windows NT 3.51 Update Disk #2"  , TAGFILE = disk2
  778.     3  = "Windows NT 3.51 Update Disk #3"  , TAGFILE = disk3
  779.     4  = "Windows NT 3.51 Update Disk #4"  , TAGFILE = disk4
  780.     5  = "Windows NT 3.51 Update Disk #5"  , TAGFILE = disk5
  781.     6  = "Windows NT 3.51 Update Disk #6"  , TAGFILE = disk6
  782.     7  = "Windows NT 3.51 Update Disk #7"  , TAGFILE = disk7
  783.     8  = "Windows NT 3.51 Update Disk #8"  , TAGFILE = disk8
  784.     9  = "Windows NT 3.51 Update Disk #9"  , TAGFILE = disk9
  785.     10 = "Windows NT 3.51 Update Disk #10" , TAGFILE = disk10
  786. [Strings]
  787.     String1 = "This update disk cannot be used on this platform."
  788.     String2 = "Setup failed to update the system."
  789.     String3 = "Setup has successfully updated your system."
  790.     String4 = "You do not have permission to update the system.  Please contact your system administrator."
  791.     String5 = "Setup failed to setup your updated files for secure operation."
  792.     String8 = "Setup has detected that the version of the system installed is "+
  793.               "newer than the update you are applying to it.  The update can render "+
  794.               "your system unstartable.  Press OK if you still wish to continue "+
  795.               "or press Cancel to exit Setup."
  796.     String9 = "Setup is going to update your Windows NT system with the English "+
  797.               "version of the update program.  If you wish to cancel the update "+
  798.               "process, please press Cancel or press OK to continue."
  799.     String11 = "Setup couldn't find the setup.log file in your repair directory. "+
  800.                "Setup cannot proceed to update your system.  Please copy the setup.log "+
  801.                "file from your Emergency Repair Disk to your repair directory "+
  802.                "and restart the update."
  803.     String12 = "Setup has not updated your system.  If you wish to update your "+
  804.                "system please run the update utility again."
  805.     String13a = "Not enough hard disk space to run Setup.  Setup needs at least "
  806.     String13b = "MB of free hard disk space on "
  807.     String13c = " before it can be run.  Delete some"+
  808.                 " files and run the Update program again."
  809.     String14  = "Setup cannot update your Windows NT files because it could not "+
  810.                 "determine your product type.  Your registry may be corrupt."
  811.     String15  = "Setup cannot update your checked system.  The update can only "+
  812.                 "be applied to the retail system."
  813.     String16  = "Setup cannot update your Windows NT files because your system is "+
  814.                 "NT 3.1 or NT 3.5. Please upgrade your system to the retail Windows NT 3.51, "+
  815.                 "and then update your system."
  816.     String17  = "Setup cannot update your Windows NT files because your system is "+
  817.                 "a pre-release of NT 3.51. Please upgrade your system to the retail "+
  818.                 "Windows NT 3.51, and then update your system."
  819.     String18  = "Setup cannot update your Windows NT files because your system is "+
  820.                 "a version later than NT 3.51.  The update can only be applied "+
  821.                 "to Windows NT 3.51."
  822.     String19  = "Setup cannot update your Windows NT files because you have installed "+
  823.                 "the IBM Power Management version of NT 3.51.  Please see IBM for "+
  824.                 "a Service Pack that can be installed on your system."
  825.     Billboard1 = "Please wait..."
  826.     Billboard2 = "Please wait while the files to be updated are determined..."
  827.     Billboard3 = "Please wait while the Emergency Repair Disk is updated..."
  828. [ProgressCopyENG]
  829.     ProCaption   = "Windows NT Setup"
  830.     ProCancel    = "Cancel"
  831.     ProCancelMsg = "The Windows NT 3.51 files are not completely updated.  Are you sure you want "+
  832.                    "to cancel copying files?"
  833.     ProCancelCap = "Setup Message"
  834.     ProText1     = "Copying:"
  835.     ProText2     = "To:"
  836. [SetupDoneDlgENG]
  837.     Caption     = "Windows NT Setup"
  838.     DlgText     = "Windows NT 3.51 has been updated. If you change or add "+
  839.                   "any components to your system, you will need to "+
  840.                   "reapply the update."$(!LF)$(!LF)+
  841.                   "Remove disks from the floppy disk drives and "+
  842.                   "choose Restart Computer to run the updated system."
  843.     Reboot      = "&Restart Computer"
  844.     Windows     = "E&xit to Windows NT"
  845.     DlgType     = "Info"
  846.     DlgTemplate = "REBOOT"
  847. [QueryOKCancelDlgENG]
  848.     STF_MB_TITLE = "Setup Message"
  849.     DlgType      = "MessageBox"
  850.     STF_MB_TEXT  = $(DlgText)
  851.     STF_MB_TYPE  = 2
  852.     STF_MB_ICON  = 4
  853.     STF_MB_DEF   = 1
  854.